package com.example.springboottest.example.sort;


/**
 * 冒泡排序，时间复杂度 O(n²)
 * 属于比较排序，性能比交换排序强，核心是相邻的元素互换
 * 特别是加上判断 每次排序时候没有元素交换时候，能直接结束整个排序
 * 比如当原数字是213456789的时候，加上isSwap交换标识，排序性能更能提高！！！
 */
public class BubbleSort extends SortBase {
    public static void main(String[] args) {
        BubbleSort sort = new BubbleSort();
        sort.sort(sort.dataArr);
        sort.show(sort.dataArr);
    }

    @Override
    public void sort(int[] dataArr) {
        int swapCount = 0;
        boolean isSwap = true;
        for (int i = 0; i < dataArr.length && isSwap; i++) {
            isSwap = false;
            show(dataArr);
            for (int j = dataArr.length - 1; j > i; j--) {
                if (dataArr[j - 1] > dataArr[j]) {
                    isSwap = true;
                    swapCount++;
                    swap(dataArr, j - 1, j);
                }
            }
        }
        System.out.println("冒泡排序完成，共进行\t" + swapCount + "次交换");
    }
}
